﻿-- Активизырует или деактивизырует триггеры
CREATE PROCEDURE [dbo].[USPTOOLS_DBTRGDisableEnableAllTriggers]
	@nAction [int] = 3
WITH EXECUTE AS CALLER
AS
DECLARE @cTbl VARCHAR(20) --  наименование таблиц
DECLARE @dynsql nvarchar(4000)
-- Список таблиц
DECLARE  CurTableListForTrigger CURSOR  FOR -- Курсор
SELECT     TOP 100 PERCENT CONVERT(varchar(50), name) AS 'TABLE NAME'
FROM         dbo.sysobjects o
WHERE     (type = 'U')  and name <> 'dtproperties'
ORDER BY name
-- Первый запис
OPEN CurTableListForTrigger 
FETCH NEXT FROM CurTableListForTrigger INTO @cTbl
-- Следуюшые записы
table_loop:
IF (@@FETCH_STATUS <> -2)
	BEGIN   
	-- Запис в таблице
	IF @nAction in (0,2)
		set @dynsql='ALTER TABLE '+@cTbl+' DISABLE TRIGGER ALL'
	IF @nAction in (1,3)
		set @dynsql='ALTER TABLE '+@cTbl+' ENABLE TRIGGER ALL'
	IF @nAction in (0,1)
		exec sp_executesql @dynsql
	IF @nAction in (2,3)
		Print @dynsql
	END
FETCH NEXT FROM CurTableListForTrigger INTO @cTbl
IF (@@FETCH_STATUS <> -1) GOTO table_loop
-- Уничтожить курсор
CLOSE CurTableListForTrigger
DEALLOCATE CurTableListForTrigger


